package org.eddycar.jproyeddycar.contrato.dao;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import org.eddycar.jproyeddycar.dao.*;
import org.eddycar.jproyeddycar.contrato.modelo.*;

public class DaoVehiculo extends JpaDao<String, Vehiculo> {

    @Override
    public Vehiculo buscarId(String id) {
        return getEm().find(Vehiculo.class, id);
    }

    public List<Vehiculo> buscarMarca(String marca) {
        List<Vehiculo> encontrados = new ArrayList<Vehiculo>();
        String n = marca.toUpperCase();
        Query consulta = getEm().createQuery("SELECT v FROM Vehiculo v WHERE v.marca like'%" + n + "%'");
        encontrados = consulta.getResultList();
        return encontrados;
    }

    public List<Vehiculo> buscarAnio(String anio) {
        List<Vehiculo> encontrados = new ArrayList<Vehiculo>();
        Query consulta = getEm().createQuery("SELECT v FROM Vehiculo v WHERE v.anioFabricante=" + anio);
        encontrados = consulta.getResultList();
        return encontrados;
    }

    @Override
    public List<Vehiculo> buscarTodos() {
        return getEm().createQuery("SELECT v FROM Vehiculo v").getResultList();
    }

    public List<Vehiculo> buscarCriterio(String criterio) {
        List<Vehiculo> encontrados = new ArrayList<Vehiculo>();
        String n = criterio.toUpperCase();
        try {
            encontrados.add((Vehiculo) getEm().createQuery("SELECT v FROM Vehiculo v WHERE v.placa ='" + n + "'").getSingleResult());
        } catch (NoResultException e) {
        }
        encontrados.addAll(getEm().createQuery("SELECT v FROM Vehiculo v WHERE v.marca ='" + n + "'").getResultList());
        return encontrados;
    }

    public void actualizar2(Vehiculo entidad) {
        Vehiculo vehiculo = new Vehiculo();
        vehiculo = getEm().merge(buscarId(entidad.getPlaca()));
        vehiculo = entidad;
        getEm().persist(vehiculo);
    }
}
